// import('./a.mjs').then((r) => console.log(r));

import obj from './a.js';

console.log(obj, 'obj'); // { b: 3, a: 5 } obj

// node 的 commonjs 模块化 是基于函数环境的  通过 函数实现 变量隔离

// node 的 Es 模块化 标准 不可以和 node 的 commonjs 模块化 混着用 因为 es 模块化 不是 函数实现的

// node 的 Es 模块化 标准 是在引擎里面 隔离的

// 13.2.0中开始正式宣布支持ES modules
// 在 开启了 modules 的node 环境中 不能使用 module.export 导出

// 如果使用  import 导入 其他库的 commonjs 模块 的导出的话  会将 module.export 导出的内容  作为  exports default 的到出
// 比如：
// a.js   module.export.a = 1
// index.js  import a from './a.js'      index.js 只能用 esMOdule的 默认方式导入a.js了
//  将  module.export 内容作为  exports default 的导处！！！ 如果没有default 属性 那就 node会自动加上一个 default 属性
// 到处的东西就变成了 {default: {a: 1}} 然后 index.js  import a from './a.js'  导入的就是 defalut 属性的内容了
//
//
// ！
// 比如axios 为了兼容 node 和 浏览器环境 axios 内部是 用 commonjs 写的
// 他导出的时候 是module.exports.default = axios;  ==》 {default: axios} 手动给加入一个default 属性 这样node就不用加了
// 然后 在 commonjs 模块里面 这么用const axios = require('axios').default; 导入

// 在 esModule 里面 这么用import axios from 'axios'; 用默认导入的方式导入

// 值得注意的是，在Node.js 23.0.0版本中，支持使用require加载原生ES模块的功能成为了正式特性。这一变化标志着Node.js在模块系统上的进一步演进和兼容性的提升。
